package ShuZu;
/**数组的数组工具类之数组的复制 扩容 缩容*/
import java.util.Arrays;

public class Array_GDBC {
    public static void main(String[] args) {
        //1.创建原数组
        int[] from = {1,2,3,4,5};/**数组一旦创建,长度不可改变*/

        //2.1数组的普通复制
        /**copyOf()用于完成数组的复制,两个参数:
         * 参数1:要复制哪个数组
         * 参数2:新数组的长度*/
        int[] to1 = Arrays.copyOf(from, 5);
        System.out.println(Arrays.toString(from));//[1, 2, 3, 4, 5]
        System.out.println(Arrays.toString(to1));//[1, 2, 3, 4, 5]
        System.out.println(from);//[I@15db9742
        System.out.println(to1);//[I@6d06d69c
        System.out.println(to1.length);//  通过 数组名.length 得到数组的 大小/长度

        //2.2完成数组的扩容
        /**扩容:给数组扩大容量,新数组长度>原数组长度
         * 扩容思路:先创建对应长度的新数组,每个位置都有对应类型的默认值
         * 然后从原数组中将所有元素复制到新数组,没有被覆盖的位置还是默认值0*/
        int[] to2 = Arrays.copyOf(from, 10);
        System.out.println(Arrays.toString(to2));//数组输出工具

        //2.3完成数组的缩容
        /**缩容:缩小数组的容量,新数组长度<原数组长度
         * 缩容思路:先创建对应长度的新数组,每个位置赋予默认值0
         * 然后从原数组中复制指定个数的元素到新数组中,类似于截取
         * */
        int[] to3 = Arrays.copyOf(from, 3);
        System.out.println(Arrays.toString(to3));

        //2.4指定首尾截取数组中的元素
        /**copyOfRange(),用于完成数组的截取,3个参数:
         * 参数1:要截取哪个数组[原数组]
         * 参数2:从原数组的哪个下标开始[包含]
         * 参数3:到原数组的哪个下标结束[不包含]
         * */
        int[] to4 = Arrays.copyOfRange(from, 2, 4);
        System.out.println(Arrays.toString(to4));//打印数组的具体元素



        /*
        通过 数组名.length 得到数组的 大小/长度
        通过 for 循环就可以循环访问 数组的 元素/值
        数组一旦创建,长度不可改变,如果想要增加或者删除数组中的元素
        需要创建一个新长度的数组,再将原数组的内容复制过去

        除了char类型的数组以外,任何其他类型的数组想要打印出数组中的具体元素
		 * 需要使用数组的工具:Arrays.toString(数组名)
         */
    }
}
